<?

/**
 * Reportes class
 *
 * Esta clase maneja los reportes del sistema
 * @author Alejandro Garcia del Rio <alejandro.garciadelrio@elserver.com>
 * @version 1.0
 * @package Reportes
*/
class Reportes extends Core {

	static protected $instancia;
	static protected $opciones = array(
		'x' => null,
		'y' => null,
		'filtros' => array(
			'mes' 			=> null,
			'fecha' 		=> null,
			'hora'			=> null,
			'id_usuario' 	=> null,
			'saliente' 		=> null,
			'id_area'		=> null,
		)
	);

	/**
	 * Constructor de la clase.
	 * 
	 * @param integer $id_caso (opcional) El id de este caso.
	 * @param array $opciones (opcional) Opciones validas para esta clase
	 */
	function __construct ($id_caso=null, $opciones=null) {
		// Llamo al constructor del parent tambien
		parent::__construct();
		// Guardo las opciones si me definio alguna
		if ($opciones)
			$this->opciones($opciones);
	}

	/**
	 * Setea las opciones 
	 * 
	 * @param array $opciones (opcional) Opciones validas para esta clase. Si esta vacio, funciona como un getter.
	 * @return array $opciones Listado de opciones
	 */
	public function opciones ($opciones=null) {
		return self::$opciones = parent::opciones(self::$opciones, $opciones);
	}

	/**
	 * Devuelve una unica instancia de esta clase
	 * 
	 * @return object Instancia de esta clase
	 */
	public static function getInstance() {
		if (!self::$instancia instanceof self)
			self::$instancia = new self;
		return self::$instancia;
	}

}

?>
